home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
vla
/
vlamodex
/
test.asm
< prev
next >
Wrap
Assembly Source File
|
1993-05-10
|
4KB
|
221 lines
DOSSEG
.MODEL SMALL
.STACK 200h
.CODE
.386
ASSUME CS:@CODE, DS:@CODE
Locals
Ideal
────────────────────────────────────────────────────────────────────────────
CsSeg dw ?
ScreenWidth = 400
INCLUDE "Modex.inc"
VLAsig db "oooooooooooooooooo",1
db "o o",1
db "o x x x xx o",1
db "o x x x x x o",1
db "o x x x xxxx o",1
db "o x x x x x o",1
db "o x xxx x x o",1
db "o o",1
db "oooooooooooooooooo",0
Roff dw 0
Boff dw 0
Goff dw 0
Rvel = 6
Bvel = 3
Gvel = -3
INCLUDE "DaPal.DB"
────────────────────────────────────────────────────────────────────────────
;can you guess what this does?
PROC WriteSig
push es ds
pusha
mov ah,1111b ;latch in all 4 planes
@Set_Write_Plane
mov ds,[cs:CSseg]
mov es,[VGAseg]
mov bp,30
imul bp,ScreenWidth/4
add bp,10
mov si,offset VLAsig
mov di,bp
@@DaLoop:
mov cl,[si]
inc si
or cl,cl
je @@AllDone
dec cl
je @@NextLine
sub cl," "-1
mov [es:di],cl
mov [es:di + ScreenWidth/4 * 2],cl
mov [es:di + ScreenWidth/4],cl
mov [es:di + ScreenWidth/4 * 3],cl
inc di
jmp @@DaLoop
@@NextLine:
add bp,ScreenWidth/4 * 4
mov di,bp
jmp @@DaLoop
@@AllDone:
popa
pop ds es
ret
ENDP WriteSig
;fills the screen w/ the palette
PROC WriteJunk
push es ds
pusha
mov es,[cs:VGASeg]
mov di,0
mov cx,80
mov ax,2
cld
mov bp,ScreenWidth
shr bp,2
@@Fw:
mov cx,bp
push ax
@@fff:
stosb
inc al
dec cx
jne @@fff
pop ax
inc ax
cmp ax,480
jb @@Fw
popa
pop ds es
ret
ENDP WriteJunk
PROC WierdPal
push ds
pusha
mov ds,[cs:CSseg]
mov dx,3c8h
xor al,al
out dx,al
inc dx
mov si,[Roff]
mov di,[Goff]
mov bx,[Boff]
mov cx,256
@@DaLoop:
mov al,[Palette + si]
out dx,al
mov al,[Palette + di+1]
out dx,al
mov al,[Palette + bx+2]
out dx,al
add si,3
add di,3
add bx,3
dec cx
jne @@DaLoop
add [Roff],Rvel
cmp [Roff],768
jl @@Rok
sub [Roff],768
@@Rok:
cmp [Roff],0
jge @@Rok2
add [Roff],768
@@Rok2:
add [Boff],Bvel
cmp [Boff],768
jl @@Bok
sub [Boff],768
@@Bok:
cmp [Boff],0
jge @@Bok2
add [Boff],768
@@Bok2:
add [Goff],Gvel
cmp [Goff],768
jl @@Gok
sub [Goff],768
@@Gok:
cmp [Goff],0
jge @@Gok2
add [Goff],768
@@Gok2:
popa
pop ds
ret
ENDP
────────────────────────────────────────────────────────────────────────────
START:
mov [cs:CsSeg],cs
mov ds,[cs:CsSeg]
@SetModeX m256x240x256,ScreenWidth;m360x480x256,ScreenWidth
mov cx,256
mov ah,0
mov si,offset Palette
@WritePalette
mov ah,1111b ;latch in all 4 planes
@Set_Write_Plane
call WriteJunk
call WriteSig
mov bx,0
mov bp,1
@@ScanLoop:
@FullVertWait
@Set_Split
@Set_Start_Offset
call WierdPal
mov ah,1
int 16h
jnz KeyPress
add bx,bp
cmp bx,[ModeXScanLines]
jle @@NotOver480
neg bp
mov bx,[ModeXScanLines]
@@NotOver480:
cmp bx,1
jge @@ScanLoop
neg bp
mov bx,1
jmp @@ScanLoop
KeyPress:
mov ah,0
int 16h ;get or wait for keypress
mov ax,3
int 10h ;set 80x25x16 text mode
mov ax,4c00h
int 21h ;return control to DOS
END START